<?php
include_once '../conexion.php';
$_SESSION['seccion'] = 'ammovimiento';
//----------------------------------------------------

class movimiento {
//mm.movman_id, mm.movman_mov_id, mm.movman_importe, mm.movman_fehca
//c.caja_id, cm.cmov_id, tm.tmov_nombre, cm.cmov_nombre
    public $id;
    public $movimiento;
    public $importe;
    public $fecha;
    public $caja;
    public $concepto;
    public $responsable;

    function __construct($id, $movimiento, $importe , $fecha, $caja, $concepto, $responsable) {
        $this->id = $id;
        $this->movimiento = $movimiento;
        $this->importe = $importe;
        $this->fecha = $fecha;
        $this->caja = $caja;
        $this->concepto = $concepto;
        $this->responsable = $responsable;
    }

}

?>
<?php //Acciones
$accion = isset($_GET["act"]) ? $_GET["act"] : '';
$REQUEST_ID_ = pg_escape_string(trim(isset($_REQUEST['ref_id']) ? $_REQUEST['ref_id'] : '0'));
$errsdiv = '';

function valida() {
    global $REQUEST_ID_;
    $errorMsg = array();
    $regex_id = '/^[1-9]{1,8}$/';

    if (!preg_match($regex_id, $_REQUEST["caja"])) {
        array_push($errorMsg, 'No se ha seleccionado una caja.');
    }
    if (!preg_match($regex_id, $_REQUEST["concepto"])) {
        array_push($errorMsg, 'No se ha seleccionado un concepto.');
    }
    if (!is_numeric($_POST["importe"])) {
        array_push($errorMsg, 'El valor importe ingresado no es numerico.');
    }
    if (!validaFecha(trim($_REQUEST["fecha"]))) {
        array_push($errorMsg, 'La fecha no es correcta.');
    }

    return $errorMsg;
}

function guardarReg() {
    global $errsdiv, $REQUEST_ID_;
    $msj = valida();
    divErr($msj);
    if (strlen(trim($errsdiv)) == 0) {
        $objArt = new movimiento($_POST["ref_id"], $_POST["movimiento"], $_POST["importe"], $_POST["fecha"], 
                $_POST["caja"], $_POST["concepto"], $_POST["responsable"]);
        if ($objArt->id == 0) {
            insertarReg($objArt);
        } else {
            modificarReg($objArt);
        }
        header("Location: movimientos.php");
    }
}

function insertarReg($obj){
    global $REQUEST_ID_;
    $sql = "INSERT INTO movimiento(mov_id, mov_cmov_id, mov_caja_id) ".
           "VALUES (lastid('movimiento','mov_id'), {$obj->concepto}, {$obj->caja}) RETURNING mov_id;";
    $con = new Conexion;
    $result = $con->retornar($sql);
    $REQUEST_ID_ = ($reg = pg_fetch_object($result)) ? $reg->mov_id : 'null';
    $sql = "INSERT INTO movimiento_manual(movman_id, movman_mov_id, movman_importe, movman_fehca, movman_resp_id) ".
           "VALUES (lastid('movimiento_manual','movman_id'), '{$REQUEST_ID_}', {$obj->importe}, to_date('{$obj->fecha}','DD/MM/YYYY'), {$obj->responsable}) ;";
    $sql .= "INSERT INTO seguridad.log_datos(logd_id, logd_usu_id, logd_tablename, logd_operacion, logd_tableid) ".
           "VALUES (lastid('seguridad.log_datos','logd_id'), ".$_SESSION['usu_id_pcb'].", 'movimiento', 'INSERT', {$REQUEST_ID_});";
    $con = new Conexion;
    $result = $con->retornar($sql);
}

if(isset($_POST["guardarMov"])){
    guardarReg();
}

function modificarReg($obj){
    $sql = "UPDATE movimiento SET ".
            "mov_cmov_id={$obj->concepto}, mov_caja_id={$obj->caja} ".
            "WHERE mov_id={$obj->movimiento}; ";
    $sql .= "UPDATE movimiento_manual SET ".
            "movman_importe={$obj->importe}, movman_fehca=to_date('{$obj->fecha}','DD/MM/YYYY'), movman_resp_id={$obj->responsable} ".
            "WHERE movman_id={$obj->id}; ";
    $sql .= "INSERT INTO seguridad.log_datos(logd_id, logd_usu_id, logd_tablename, logd_operacion, logd_tableid) ".
            "VALUES (lastid('seguridad.log_datos','logd_id'), ".$_SESSION['usu_id_pcb'].", 'movimiento', 'UPDATE', {$obj->id});";
    $con = new Conexion;
    $result = $con->retornar($sql);
}
?>
<?php

function listarCajas($selected) {
    $sqlstr = "SELECT c.caja_id, c.caja_codigo,  ".
    "c.caja_saldo_inicial + ".
    "COALESCE((SELECT sum(mm.movman_importe) FROM movimiento mo, movimiento_manual mm, concepto_movimiento cmo ".
    "WHERE mo.mov_id = mm.movman_mov_id AND mo.mov_cmov_id = cmo.cmov_id AND ".
    "mo.mov_caja_id = c.caja_id AND  cmo.cmov_tmov_id = 1),NULL,0.00) - ".
    "COALESCE((SELECT sum(mm.movman_importe) FROM movimiento mo, movimiento_manual mm, concepto_movimiento cmo ".
    "WHERE mo.mov_id = mm.movman_mov_id AND mo.mov_cmov_id = cmo.cmov_id AND ".
    "mo.mov_caja_id = c.caja_id AND cmo.cmov_tmov_id = -1),NULL,0.00) +  ".
    "COALESCE((SELECT sum(pcc.pago_importe) FROM movimiento mo, pago_cuota_curso pcc ".
    "WHERE mo.mov_id = pcc.pago_mov_id AND mo.mov_caja_id = c.caja_id),Null,0.00) as caja_saldo_actual ".
    "FROM caja c WHERE c.caja_fecha_cierre IS NULL ";
    $sqlstr .= " ORDER BY c.caja_codigo";
    $row = '';
    $conn = new Conexion();
    $consulta = $conn->retornar($sqlstr);
    $row = '<select name="caja" style="width: 280px">';
    $sel = $selected == 0 ? 'selected = "selected"' : '';
    //$row .= ' <option value="0" ' . $sel . '><span style="color:#516770; font-style:oblique; font-weight:bold">--Todos--</span></option>';
    while ($reg = pg_fetch_object($consulta)) {
        $sel = $selected == $reg->caja_id ? 'selected = "selected"' : '';
        $row .= ' <option value="' . $reg->caja_id . '" ' . $sel . '>' . $reg->caja_codigo . ' [Saldo actual: $'.$reg->caja_saldo_actual.']</option>';
    }
    $row .='</select>';
    echo $row;
}

function listarResponsables($selected, $parentid) {
    $sqlstr = "SELECT distinct re.resp_id, re.resp_nombre, re.resp_cuip ".
    "FROM responsable re, rol ro, rol_responsable rr, concepto_movimiento cm, tipo_movimiento tm ".
    "WHERE rr.rolresp_rol_id = ro.rol_id AND rr.rolresp_resp_id = re.resp_id AND ".
    "cm.cmov_tmov_id = tm.tmov_id AND tm.tmov_id = ro.rol_tmov_id AND cm.cmov_id = {$parentid} ".
    "ORDER BY re.resp_nombre ASC;";
    $row = '';
    $conn = new Conexion();
    $consulta = $conn->retornar($sqlstr);
    $row = '<select name="responsable" id="selresponsable" style="width: 240px">';
    $sel = $selected == 0 ? 'selected = "selected"' : '';
    //$row .= ' <option value="0" ' . $sel . '><span style="color:#516770; font-style:oblique; font-weight:bold">--Todos--</span></option>';
    while ($reg = pg_fetch_object($consulta)) {
        $sel = $selected == $reg->resp_id ? 'selected = "selected"' : '';
        $row .= ' <option value="' . $reg->resp_id . '" ' . $sel . '>' . strToShowValue($reg->resp_nombre) . '</option>';
    }
    $row .='</select>';
    echo $row;
}

function listarConceptos($selected) {
    global $REQUEST_ID_;
    $sqlstr = "SELECT cm.cmov_id, tm.tmov_nombre||' - '||cm.cmov_nombre as cmov_nombre ".
    "FROM concepto_movimiento cm, tipo_movimiento tm ".
    "WHERE cm.cmov_tmov_id = tm.tmov_id AND cm.cmov_seccion IS NULL ".
    "ORDER BY tm.tmov_nombre, cm.cmov_nombre";
    $row = '';
    $conn = new Conexion();
    $consulta = $conn->retornar($sqlstr);
    $row = '<select name="concepto" style="width: 240px" onchange="refreshForm(\'responsables_xml.php?ref_parent_id=\'+this.value, \'selresponsable\')" >';
    $sel = $selected == 0 ? 'selected = "selected"' : '';
    //$row .= ' <option value="0" ' . $sel . '><span style="color:#516770; font-style:oblique; font-weight:bold">--Todos--</span></option>';
    while ($reg = pg_fetch_object($consulta)) {
        $sel = $selected == $reg->cmov_id ? 'selected = "selected"' : '';
        $row .= ' <option value="' . $reg->cmov_id . '" ' . $sel . '>' . $reg->cmov_nombre . '</option>';
    }
    $row .='</select>';
    echo $row;
}

function getSelectedReg() {
    global $REQUEST_ID_;
    $sqlstr = "SELECT mm.movman_id, mm.movman_mov_id, mm.movman_importe, ".
        "to_char(mm.movman_fehca, 'DD/MM/YYYY') as movman_fehca, mm.movman_resp_id, m.mov_cmov_id, m.mov_caja_id ".
        "FROM movimiento_manual mm, movimiento m ".
        "WHERE mm.movman_mov_id = m.mov_id AND mm.movman_id = {$REQUEST_ID_} ";
    $row = '';
    $conn = new Conexion();
    $consulta = $conn->retornar($sqlstr);
    return $consulta;
}

function divErr($mensajes) {
    global $errsdiv;
    if ((count($mensajes) > 0)) {
        if (trim($mensajes[0]) != '') {
            $errsdiv .= '<div class="err_inputs"><ul>';
            foreach ($mensajes as $keyid => $val) {
                $errsdiv .= '<li>' . $val . '</li>';
            }
            $errsdiv .= '</ul></div>';
        }
    }
}
?>
<?php
$regcaja = isset($_POST["caja"])?$_POST["caja"]:'';
$regconcepto = isset($_POST["concepto"])?$_POST["concepto"]:'0';
$regmovimiento = isset($_POST["movimiento"])?$_POST["movimiento"]:'';
$regimporte = isset($_POST["importe"])?$_POST["importe"]:'';
$regfecha = isset($_POST["fecha"])?$_POST["fecha"]:'';
$regresponsable = isset($_POST["responsable"])?$_POST["responsable"]:'';
if($REQUEST_ID_ != '0'){
    $queryObj = getSelectedReg();
    if ($regObj = pg_fetch_object($queryObj)) {
        $regcaja = $regObj->mov_caja_id;
        $regconcepto = $regObj->mov_cmov_id;
        $regmovimiento = $regObj->movman_mov_id;
        $regimporte = numToShowValue($regObj->movman_importe);
        $regfecha = $regObj->movman_fehca;
        $regresponsable = $regObj->movman_resp_id;
    }
    $queryObj = null;
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Movimiento</title>
        <script type="text/javascript" src="../utilidades.js"></script>
        <script type="text/javascript" src="ammovimiento.js"></script>
        <link href="../css/doc.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <?php //control de acceso
        if(!isset ($_SESSION['usu_rusu_id_pcb'])){
            echo '<span style="color:red;">No tiene acceso a esta pantalla.</span>'.
                '</body>';
            die;            
        }
        ?>
        <table class="pageTitle" width="100%">
            <tbody>
                <tr>
                    <td class="title_nm">Movimiento</td><td class="watermark_right">&nbsp;</td>
                </tr>
            </tbody>
        </table>
        <hr/>
        <div id="div_data_error"><?php echo $errsdiv ?></div>
        <form name="form_mov" id="form_mov" method="post" action="ammovimiento.php" onsubmit="return guardarRegistro()">
            <input type="hidden" name="ref_id" value="<?php echo $REQUEST_ID_ ?>"/>
            <input type="hidden" name="movimiento" value="<?php echo $regmovimiento ?>" />
            <table>
                <tr>
                    <td>Caja:</td>
                    <td>
                        <?php
                           listarCajas($regcaja);
                        ?>
                    </td>
                </tr>
                <tr>
                    <td>Concepto:</td>
                    <td>
                        <?php
                           listarConceptos($regconcepto);
                        ?>
                    </td>
                </tr>
                <tr>
                    <td>Part&iacute;cipe:</td>
                    <td>
                        <?php
                         listarResponsables($regresponsable, $regconcepto);
                        ?>
                    </td>
                </tr>
                <tr>
                    <td>Importe $:</td><td><input type="text" name="importe" value="<?php echo $regimporte?>" size="20" maxlength="11" onkeypress="return isNumeric(event);"/></td>
                </tr>
                <tr>
                    <td>Fecha:</td>
                    <td>
                        <?php
                        include_once 'complements/date_picker/date_picker.php';
                        getDatePicker('complements/date_picker/', 'fecha');
                        ?>
                        <script type="text/javascript">
                            document.getElementById('fecha').value='<?php echo $regfecha?>';                                                    
                        </script>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" name="guardarMov" value="Guardar"/>
                        <input type="button" name="cancelar" value="Cancelar" onclick="self.location='movimientos.php';"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>
